Distributed computer system snapshots and instantiation thereof

ABSTRACT

Distributed computer systems prepare and instantiate snapshots by processing sets of nodes representing computer resources that are portions of a larger system. A user may choose to prepare or instantiate a snapshot containing all or only a portion of the data within the distributed computer system, such as a template of the distributed computer system. A template snapshot may be available in an electronic marketplace for other users to purchase and instantiate into a replica of the distributed computer system.

CROSS-REFERENCE TO RELATED APPLICATIONS

U.S. Non-Provisional application Ser. No. 13/070,812 filed Mar. 24,2011, is hereby incorporated by reference in its entirety.

BACKGROUND

Distributed computer system information can be complex to manage. Somecompanies, therefore, choose to have production and testingenvironments. Should a bug be discovered in the production environment,responsible engineers may try to replicate the bug in the testingenvironment. However, as these systems may involve large computingenvironments, an engineer may have to spend time to back up and restorethe production computing environment using another system in order totrack down the bug. In some cases, each service and its associated datamay be individually backed up from within the distributed computersystem.

Properly backing up information becomes particularly important whenservices and data are not synchronized correctly. If expected data isnot fully propagated across each backup, service errors may occur. Forexample, an engineer may individually back up each service while thesystem is operating in order to minimize system downtime. However, anynew information received between the first service backup and the lastservice backup may not be present in the first service backup. If adistributed computer system is restored from these backups that includea timing difference, errors may occur. Because of the timing difference,a user may not be populated in a user registration service that wasbacked up first, but may have purchases recorded on a fulfillment serverthat was backed up last. An attempt to recall user information relatedto a purchase on the fulfillment server may fail due to the unexpectedinformation mismatch. While various techniques have been employed toeffectively backup and restore distributed computer systems, due to thecomplexity of the tasks, the employed techniques are of varied success.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows an illustrative example of a distributed computer systemenvironment in accordance with at least one embodiment;

FIG. 2 shows an illustrative example of a distributed computer systemsnapshot broken down into nodes in accordance with at least oneembodiment;

FIG. 3 shows an illustrative example of a process that may be used totake a snapshot of a distributed computer system at a point in time inaccordance with at least one embodiment;

FIG. 4 shows an illustrative example of a control system for processinga distributed computer system snapshot and instantiate procedure inaccordance with at least one embodiment;

FIG. 5 shows an illustrative example of a process that may be used toprepare a snapshot in a distributed computer system with managementservices in accordance with at least one embodiment;

FIG. 6 shows an illustrative example of a process that may be used toinstantiate a snapshot in a distributed computer system with managementservices in accordance with at least one embodiment;

FIG. 7 shows an illustrative example of a computing resource withdifferent types of information in accordance with at least oneembodiment;

FIG. 8 shows an illustrative example of a distributed computer systemsnapshot broken down into node types in accordance with at least oneembodiment;

FIG. 9 shows an illustrative example of a node type aware process thatmay be used to prepare a snapshot in a distributed computer system withmanagement services in accordance with at least one embodiment;

FIG. 10 shows an illustrative example of a node type aware process thatmay be used to instantiate a snapshot in a distributed computer systemwith management services in accordance with at least one embodiment;

FIG. 11 shows an illustrative example of a electronic marketplaceoffering distributed computer snapshots in accordance with at least oneembodiment; and

FIG. 12 illustrates an environment in which various embodiments can beimplemented.

DETAILED DESCRIPTION

In the following description, various embodiments will be described. Forpurposes of explanation, specific configurations and details are setforth in order to provide a thorough understanding of the embodiments.However, it will also be apparent to one skilled in the art that theembodiments may be practiced without the specific details. Furthermore,well-known features may be omitted or simplified in order not to obscurethe embodiment being described.

Techniques described and suggested herein include systems and methodsfor preparing and restoring snapshots of distributed computing systems,which may include cloud systems. The snapshots, in some embodiments, areeach a collection of information representing parts of a distributedcomputing system at a point in time. The computing resources, includingnetwork resources, may be represented as a set of linked nodes, whereeach link represents a relationship between two nodes. Computingresources may include computing systems, such as servers, and alsonetwork resources, such as routers, that have information, such as dataand state, that may be stored in a snapshot. In one embodiment, therelationship between the nodes is such that each node is a parent and/orchild of at least one other node, the resulting set forming a tree ofnodes. A head or top node of the set may represent the largest part ofthe system, such as an entire cloud, while each child node mightrepresent a specific portion of the system and/or a parent node, such adata store being contained in a subnet. In one example, a cloud mayinclude a shared pool of configurable computing resources. The cloud maybe represented by a cloud node, where the individual computing resourcesmay be represented by child nodes, grandchild nodes or other descendantnodes from the cloud node. In some embodiments, the node may contain allthe associated data for a computing resource. In other embodiments, datawithin the node may be placed in child nodes.

To prepare a snapshot of a distributed computing system, the computingresources contained within the system can be represented as such a setof nodes. The system may start with a top or head node in the hierarchyand traverse each node according to the hierarchical links whiledetermining whether to store some or all of the information in eachnode. Relationship information between the nodes may be stored as linksbetween the nodes or as metadata. Dependency information betweencomputing resources may also be noted as metadata within the computingresources. In one embodiment, the distributed computing system isstructured such that each computing resource node is defined ascontained within a larger computing resource node, up to the headcomputing resource node. A link between computing resource nodes maythen represent that an child computing resource was contained within, oris otherwise a part of, the parent computing resource. The collection ofcomputing resource nodes may form a tree. The tree of computing resourcenodes may be traversed to look for information to store in the snapshot,resulting in a collection of stored nodes representing a snapshot of thedistributed computer system.

Instantiating a snapshot may also use the node representation of a setof stored computing resources. In one embodiment, an instantiatingsystem may first traverse a set of stored nodes looking fordependencies. The dependencies may be implicitly known by theinstantiating system or explicitly defined, such as within metadata.Each dependency may be noted and a data structure, such as a datastructure that encodes a directed acyclic graph (a “DAG”), may becreated showing independent and dependent nodes. The DAG may be used toinstantiate independent nodes or computing resources before dependentnodes or resources are instantiated. The instantiation of a snapshot mayinclude the functions of restoring, cloning and copying of distributedcomputing systems from a snapshot.

A snapshot may be prepared with only specified data from the nodes. Inone embodiment, a user may selectively prepare a snapshot with templateinformation, production data and/or configuration information. Atemplate snapshot may include information to replicate structure andoperation of a distributed computing system without the operationaldata, such as usernames and passwords. The template snapshot may beuseful to provide to another entity that wishes to operate a similardistributed computer system. For example, a template snapshot may enablea user to instantiate a new social networking website with thefunctionality of the original social networking website from a snapshot,but without the customer data. A template snapshot with production datamay include the template information along with live production datafrom the original distributed computer system. The template snapshotwith production data may be useful, for example, in a test environment.Configuration information may include information specific to theinstallation of the specific distributed computing system. The templatesnapshot with production data and configuration information may be usedto instantiate the distributed computing system to as it was at the timethe snapshot was taken and may be useful in quick recovery situations.

A snapshot may be instantiated with all or part of the informationcontained within the snapshot. For example, a snapshot with templateinformation, production data and configuration information may be usedto instantiate a template of the original distributed computing system,since template information is contained within the snapshot. In acontrasting example, however, a snapshot with template data, but withoutproduction data and configuration information, may only instantiate atemplate of the original distributed computing system, as the snapshotdoes not contain further data or information.

FIG. 1 shows an illustrative example of a distributed computer system asa cloud service 100. A network of computing resources (or “NCR”) 102 mayallow a customizable definition of computing resources and networktopology. In the embodiment shown, parent computing resources may beseen as containing, or otherwise being a part of, the parent computingresource. Here, the NCR 102 may contain a virtual private network 104,customer gateway 112, subnet 114 and internet gateway 106. There may bemultiple of each kind of computing resource. For example, there may bemultiple subnets within the NCR. The NCR 102 may also contain furtherinformation, as may include configuration 122 and customer stateinformation 110. Customer state information 110 may includeconfigurations and/or descriptions of customer devices outside of thenetwork of computing resources. For example, customer router settingsfor a router at the company offices may be stored in the customer stateinformation 110. The customer gateway 112 may provide external privateaccess to the NCR.

The first child node contained in the NCR 102 may correspond to thevirtual private network 104. The virtual private network 104 may provideaccess and routing information for a part of the NCR 102. The virtualprivate network 104 may also have child computing resources. The virtualprivate network 104 may also include configuration information 122.

In the embodiment shown, the subnet 114 may provide a network structurefor computing and data storage resources. The subnet 114 may have childcomputing resources including computing instances 118 (sometimes simplyreferred to as “instances”), data stores 120 and configurationinformation 122. Instances 118 may include computing resources withconfiguration 122. Data stores may provide storage, including databasestorage and/or file storage, for the instances 118 or other needs, andinclude their own configuration 122. Data stores may also includeseparate services for file storage, database storage and other types ofdata storage.

The structure of computing resources in a network of computing resourcesas shown in FIG. 1 may also be represented as nodes in a set. In FIG. 2,a set of nodes 200 is shown as a directed acyclic graph (“DAG”) with thenodes representing computing resources within the hierarchy described inrelation to FIG. 1. The lower computing resources may depend on theupper resources. By representing the computing resources as a DAG, thecomputing resources may be easily stored in a snapshot in an organizedmanner. During a snapshot storing procedure, dependencies may not beimportant and so the DAG may be traversed in an orderly manner to storeselected data from each node in a snapshot.

In one embodiment, a parent computing resource is stored before a childcomputing resource while noting any dependencies. For example, a networkof computing resources node 202 may be stored before nodes such as avirtual private network (VPN) gateway 204 or internet gateway 206 may bestored. A customer gateway node 212 or subnet 214 may be stored andnoted as dependent on a VPN gateway 204 creation, as they may bedependent on the VPN gateway routing configuration. Instances 218 anddata stores 220 may be stored with noted dependencies on a subnet 214for network configuration.

While an example of computing resources and their hierarchy has beenshown in FIGS. 1 and 2, it should be recognized that other hierarchiesand computing resource definitions may be used. For example, thecomputing resources may be organized as a tree instead of a DAG. A treemay be useful in snapshot creation, as peer and other dependencies maynot need to be respected at the time of snapshot. In contrast, duringinstantiation, dependencies may be important, such that a data structurerepresenting dependencies may be created to order the instantiation ofcomputing resources. In some embodiments, the DAG of nodes may includemore granular information down to a desired component or module. In oneembodiment, block storage devices may be included as child nodes ofinstances 218.

While a DAG has been shown as a set, other sets and relationships mayalso be used. In one embodiment, relationships or links may representconnectivity. For example, an instance 218 may have connectivity to adata store 220, subnet 214 and internet gateway 206 represented by linksin a graph type of set. In another example, an instance 218 relationshipwith a subnet 214 may represent that the subnet 214 services theinstance. In another embodiment, relationships or links may representdependencies. The dependencies may form a directed acyclic graph or DAG,such that one resource with dependencies may be provisioned after thedependencies are provisioned.

It should be recognized that networks of computing resources may includevirtualized and non-virtualized resources. In some embodiments, novirtualized resources are used. For example, in some embodiments, acomputing resource may include an operating system on a physical machinewithout a hypervisor. In other embodiments, virtualized resources areused. For example, in some embodiments, a computing resource, mayinclude a guest operating system managed by a hypervisor on a physicalmachine. These resources may exist in a data plane, which may be managedby a control plane.

Various embodiments provide a separate control environment, or controlplane, that may be used to monitor and/or control aspects of a dataenvironment, or data plane. The functionality of a control plane may beprovided as a set of Web services, for example, enabling the controlplane to act as a virtual administrator. A user may submit a request tothe control plane through an externally-visible application programminginterface (API), for example, which may be analyzed to determine actionsto be performed in the data plane, such as actions that create, delete,prepare a snapshot, instantiate a snapshot or otherwise operate oncomputing resources. State information may be passed to a component ofthe data plane for each task necessary to perform the action, such thatthe control plane may manage the performance of the tasks without havingdirect access into the components of the data plane. Once provisioned orinstantiated, a user may have native access to the computing resourcesin the data plane.

The set of nodes 200 may be used to aid in the taking of a snapshot,such as in a process of preparing a snapshot 300 outlined in FIG. 3. Inone embodiment, a control plane requests a snapshot of informationwithin a data plane having a network of computing resources. After thesnapshot request is received 302, the control plane may determineresources related to the network of computing resources that should benotified and locked 303 pending the snapshot. The locking of theresources to a certain state in time may allow the snapshot to retainconsistency. The head computing resource of a set may be located 304 andselected. Information from the selected computing resource may then bestored 306. If further computing resources exist 308 in the set, thenext computing resource may be located 310, selected and reviewed inorder to have the next computing-resource information stored 306. If not308, any remaining information may be stored, which may include metainformation such as time and date of the snapshot, types of informationstored, versions and other information about the snapshot and systemconfigurations. Once complete, the resources may be released from therequested lock. Examples of storing a snapshot may be seen in U.S.Non-Provisional application Ser. No. 13/070,812, which is incorporatedby reference above. In various embodiments, the resources may journalactivity that modifies the resource during the lock period. After thelock is released, the journal may be applied to update the resource. Thecomputing resources may be prevented from being modified until thesnapshot is complete. Changed entries may be marked as “dirty” with theoriginal data available to roll back the “dirty” entries.

The set of nodes may be traversed such that an underlying computingresource may be reviewed for computing resource data to store in asnapshot. The computing resource data gathered may be stored in an orderthat is useful for provisioning resources from the snapshot. In someembodiments, the traversal may be through preorder, post-order orin-order traversal methodologies. For example, in a tree, if a parentnode is required to be constructed before any child nodes may beconstructed, a preorder traversal may be useful. In a preorderconstruction the parent may be visited and the parent portion of thesnapshot constructed before child nodes are visited. In otherembodiments, a post-order traversal may be useful to construct the childnode portion of the snapshot before the parent node portion. In otherembodiments, such as embodiments that contain peer dependencies, aninitial tree traversal may be used to create a dependency graph, such asa DAG, and the dependency graph followed in creating the snapshot. Thedependency graph may ensure that resources are stored in an order thatrespects dependencies when re-instantiated. This may provide theadvantage of speeding up the process of instantiation, as dependenciesare prepared at the time of the snapshot.

For example, the DAG in FIG. 2 may be used to prepare a snapshot in thefollowing manner. The head node, a network of computing resources node,202 is visited and its information is stored. The network of computingresources information may include settings, default values andorganizational information about the network of computing resourcesinformation. The VPN Gateway 204, then Customer Gateway 212 are visitedand their information stored within the snapshot. Gateway informationmay include routing and security information. The subnet 214 is thenstored followed by the instances 218 and data stores 220.

Subnet information may include addressing and connectivity information.Instance information may include operating system images, software, andother processing information. Data stores may include schema, databases,files and other storage information. Then the internet gateway 206 maythen be stored. Internet gateway information may include routing, portsettings and security information. After which, the snapshot may becomplete. It should be noted that computing resources include bothcomputing systems, such as instances and data stores, and networkresources, such as gateways and subnets. In some embodiments, thecomputing resources correspond to physical objects, such as a routerand/or a server. In other embodiments, the object may be conceptual,such that configurations may correspond to entries within a largersystem.

Some or all of the process 300 (or any other processes described herein,or variations and/or combinations thereof) may be performed under thecontrol of one or more computer systems configured with executableinstructions and may be implemented as code (e.g., executableinstructions, one or more computer programs, or one or moreapplications) executing collectively on one or more processors, byhardware, or combinations thereof. The code may be stored on acomputer-readable storage medium, for example, in the form of a computerprogram comprising a plurality of instructions executable by one or moreprocessors. The computer-readable storage medium may be non-transitory.

In some embodiments, the computing resources may have associatedservices to aid in taking and instantiating snapshots. A distributedcomputer management system 400 with such services may be seen in FIG. 4.A control plane 402 communicates with a data plane 404. The controlplane 402 may include application programming interface (API) access,web service access and other manual or programmatic access. The controlplane 402 may allow for security, encapsulation and simplification oftasks communicated to the data plane 404. For example, a user mayrequest to instantiate an instance 406 and data store 408 at the controlplane 402. The control plane 402 may contact the data plane or, in somecases, the correct services directly and provide instructions on thecreation of each instance 406 and data store 408 requested. The controlplane may then report back the status of the instance and data store.

The data plane may contain computing resources 406, 408, 409 andservices 410, 412, 414 to support the computing resources. Each service410, 412, 414 may contain management logic 416, 418, 420 to support theservice and an API to access the service. Part of the management logicmay include instructions to prepare or instantiate a snapshot of thecomputing resource. For example, the control plane 402 may receive arequest to prepare a snapshot of an instance 406. The control plane maycontact the data plane or instance service 410 and request the snapshotof the instance be performed. The instance management logic 416 maydetermine the information to store in the snapshot, request storage forthe snapshot and perform the snapshot procedure. The management logic416 may also report the status to the control plane 402 as complete,when the snapshot is complete, as well as disclose the location of thesnapshot. The services 410, 412, 414 may also be linked, such thatinformation or requests may be shared. In one embodiment, an instancemanagement logic 416 may request storage for the snapshot from a datastore service 412. In some embodiments, third party services mayimplement the API as well. The third party services may then notify thecontrol plane to register as a supported service, such that the servicemay be called during snapshot or instantiation procedures.

The control plane 402 and/or data plane 404 may use these services inperforming distributed computing system snapshots. When requested toprepare a snapshot of the network of computing resources, the controlplane may request that each service associated with a computing resourcein the tree prepares a snapshot. The control plane can then aggregateand/or link the snapshots. Computing resources that depend on othercomputing resources may request a snapshot of the other computingresources when a snapshot of that particular computing resource isrequested, and reference the snapshot of the other computing resources.For example, a control plane 402 may receive a request for a snapshot ofan identified subnet computing resource. The control plane 402 mayrequest that the data plane 404 prepare a snapshot of the subnetcomputing resource. The data plane 404 may contact the network service414 and request a snapshot of the subnet computing resource. Theconnectivity management logic 420 may prepare a snapshot of the subnetcomputing resource and in so doing, discover an instance 406 and a datastore 408 related to the subnet computing resource. The connectivitymanagement logic 420 may then contact the instance service 410 and datastore service 412 and a request a snapshot of each. When complete, theinstance service 410 and data store service 412 may return a referenceof their new prepared snapshots to the connectivity management logic406. The connectivity management logic 406 may aggregate the snapshotsand return a reference of the aggregation to the data plane 404, whichmay return the reference to the control plane 402.

The snapshots may be aggregated in any of several different ways. In oneembodiment, the snapshots are aggregated as one image, such that asnapshot is contained in one or more files grouped together. In anotherembodiment, the snapshots are aggregated as a reference layout. Theindividual computing resource snapshots may be managed by theirrespective services, but the individual computing resource snapshots maycontain links or references to other related individual computingresource snapshots. For example, the subnet snapshot described above maycontain the timestamp and identification reference of the instance anddata store snapshots. In another embodiment, the snapshots may beconvertible from an image to a reference layout. For example, a user mayrequest a snapshot as an image to place into less expensive storage,such as a long-term backup service. If the snapshot is useful in thefuture, the user may request the image snapshot be broken intoindividual computing resource snapshots which may be stored within thevarious relevant services. In this way, the services may be prepared toinstantiate the snapshot in a shorter period of time. This prioritystorage may provide advantages, including versioning of snapshots. Thecurrent stable version may be available for a more rapid instantiationin a reference layout, while an image may be useful for previousversions that may be more slowly instantiated.

An example of a method of preparing a distributed computer systemsnapshot in a service environment 500 may be seen in FIG. 5. A controlplane may receive a request 502 for a snapshot of a distributed computersystem. The control plane may request 504 a snapshot of the distributedcomputer system from data plane and a lock to prevent changes to thecomputing resources during the snapshot. The data plane may request 506a snapshot of the head computing resource of the distributed computersystem from the service associated with the head computing resource. Thecomputing resource service may then perform 508 a snapshot procedure onthe computing resource. If the computing resource service discoversunsnapshotted child computing resources 510, the computing resourceservice may traverse 512 each child computing resource and request 516 asnapshot from each child service associated with the child computingresource. An unsnapshotted child computing resource may includeresources that do not have a current snapshot available, such ascomputing resources that have never had a snapshot taken or computingresources that have an out of date snapshot. If there were no furtherunsnapshotted child computing resources 510, the computing resourceservice may aggregate child snapshots with the current computingresource snapshot and return 516 a snapshot reference to the callingservice. The snapshot reference may include a reference to theunderlying aggregated snapshot. As each service returns a snapshotreference, eventually the process will return to the head node returningan aggregated snapshot reference to the control plane. When the controlplane receives a reference of the entire aggregated snapshot, thecontrol plane may archive the aggregated snapshot and release anyacquired lock. In some embodiments, the lock may be released for eachresource after the resource has a current snapshot taken. In somealternative embodiments, the control plane may contact the servicesdirectly rather than through a data plane management layer.

In an alternative embodiment, the control plane may also traverse theset of computing resources to construct a dependency structure, such asa DAG. Using the dependency structure such that independent computingresources in the snapshot are stored before dependent resources, asnapshot may be created that allows for an in-order instantiation of thestored resources, as shown in FIG. 6.

An example of a method of instantiating a distributed computer systemsnapshot ordered for dependency in a service environment 600 may be seenin FIG. 6. A control plane may receive 602 a request to instantiate asnapshot. The control plane may, in turn, request 604 that the dataplane instantiate the snapshot. The data plane may select a first nodefrom the snapshot and request the node be instantiated 606 from aservice associated with the type of computing resource represented bythe node. If the snapshot contains 608 remaining nodes, the next nodemay be requested to be instantiated 610. Services associated withcomputing resources represented by each node may be contacted andrequested to instantiate the next node of the snapshot. If no more nodesare contained 608 in the snapshot, the computing resource service mayreport 614 the instantiation as complete to the requesting service. Aseach service reports the instantiation process as complete, the controlplane may eventually receive an instantiation complete message. In someembodiments, after the instantiation is complete, the control plane maystart the associated services and activate the distributed computingsystem in the order contained within the snapshot.

In some cases, the snapshot may not be ordered for dependency as seen inFIG. 6. In these embodiments, the dependency graph may need to be builtfirst and the dependency graph used in ordering the provisioning of thecomputing resources represented by nodes within the snapshot. However,once the order is determined, some embodiments proceed as in FIG. 6 withthe determined order.

Data within computing resource objects or nodes may be furtherclassified as seen in FIG. 7. In some embodiments, the data in acomputing resource node 700 is classified as template data 702,production data 704 and configuration data 706. Template data mayinclude information that represents the structure and operation of thedistributed computing system. For example, template data may includelogic 708, data definitions 710 such as database table definitions,generic routing information such as links to other computing resources712, and generic configurations 714 such as operating systemconfigurations and application files. Production data 704 may includeinformation generated and obtained in connection with a particularapplication. Production data 704 may include user data, administrativeinformation and other information useful to the operation of adistributed computing system, such as a web service. Configuration data706 may include information about a specific configuration of adistributed computing system. Configuration data 706 may includespecific IP addresses, computing resource identification numbers, datacenter configuration files and other specifics about the distributedcomputing system as it operates in its current environment.

Types of data may be combined in a snapshot. In some cases, combinationsof data may be referred to as a depth of data. For example, storingtemplate data alone may be referred to as a shallow depth, because, insome embodiments, only the network of computing resources structure maybe reproduced. A normal snapshot may include the template data and theproduction data. A deep snapshot may represent template data, productiondata and configuration data. In some embodiments, the system or the usermay identify each type or depth of data. For example, some data may beimplicitly identified by the system, such as database schema is likelypart of the template data. Other data may be explicitly marked by auser, such as a database table of system configurations marked astemplate data.

In other embodiments, there may be alternatives stored with thesnapshots. For example, a template may include different options orcustomizations 716. In some cases, the options or customizations may bemutually exclusive and therefore only one customization may beinstantiated. For example, production data alternatives may include livedata and testing data. The user may select to instantiate either, orsometimes both, production data set.

The snapshots may be used to checkpoint and restore a distributedcomputing environment to dates and times in the past, while reducingredundancy and increasing speed. In an embodiment, template data may notchange frequently. A template snapshot may thus provide a base formultiple production data and configuration data snapshots. Thus asnapshot may include metadata that specifies snapshots to join togetherwhich will form a complete snapshot of a specified period in the past.Similarly, if data has not changed since a last snapshot, such ascomputing resource template data, the computing resource may return theprior snapshot as a current snapshot. By returning the prior snapshot,time, space and computing resources may be saved.

In some embodiments, configuration data may be stored with the templateusing generic identifiers. The generic identifiers may identifyinformation that should be configured upon instantiation while notingimportant information. For example, a subnet may include an IP addressrange, with an instance and a data store each having an IP address. TheIP address range and individual IP addresses may be noted as related andreferences to the ranges stored as generic identifiers. The genericidentifiers may then be used to ensure that the instance and data storeeach receive an IP address within the subnet when instantiated, even ifthe IP address range is different.

In some embodiments, nodes may represent types of data as seen in FIG.8. FIG. 8 includes the nodes discussed in FIG. 2 with types of databroken into separate nodes. Template nodes may include the NCR 202, VPNGateway 204, Internet Gateway 206, Customer Gateway 212, Subnet 214,Instance 218 and Data Store 220 nodes. Each template node may representa computing resource at a shallow depth. Further information, such asproduction data and configuration data, may be represented as productiondata nodes 802 and configuration data nodes 804 below the template node.

When traversing a computing resource DAG to instantiate or store asnapshot, only nodes corresponding to information to be stored for thesnapshot need to be visited. In some embodiments the selected data depthmay dictate the nodes instantiated or stored. For example, aninstantiation service instantiating a template snapshot may not need tovisit production data nodes 802 or configuration data nodes 804. Inother embodiments, generic identifiers may be constructed for templatesnapshot instantiations from data contained within the production and/orconfiguration data nodes. In other embodiments, only portions of a cloudmay be selected to snapshot. For example, an administrator may only wishto store direct ancestors and descendants of a specific subnet whichcontains the functionality of a website service. Other subnets may beirrelevant to the main functionality and therefore undesirable. In someembodiments the user may select which nodes to snapshot. In otherembodiments, the system may programmatically select which nodes toinstantiate or store. In other embodiments, the set of nodes may beinstantiated or stored through parallel processing rather thansequential processing by allowing for a process per branch approach. Insome embodiments, a selected data snapshot may be referred to as a typeof snapshot. For example, the snapshot may be described as a templatesnapshot for template data; production snapshot for production andtemplate data; and a configuration snapshot for template, production andconfiguration data.

An example of a parallel executing method in a distributed computingsystem that programmatically selects nodes to store in a snapshot isshown in FIG. 9. A request for a type of snapshot is received 902 by thecontrol plane. The type of snapshot may impose criteria on the storingof snapshot information. For example, if a template snapshot isselected, the criteria may cause only template data (and/or data markedas template information in metadata) to be stored in the snapshot. Thecontrol plane contacts the data plane and requests 902 a type ofsnapshot starting with a head computing resource. The computing resourceis stored in a snapshot 904. If the computing resource contains 908child computing resources, or has child nodes depending on one's view,each child may be visited 910 by a process and their snapshotsaggregated. If not 908, the computing resource may return 920 areference to the current aggregated snapshot. If the child is included912 in the snapshot criteria, and the child is a computing resource 914,the associated child computing resource service may be requested 918 toprepare 906 a snapshot of the child computing resource. If the child isincluded 912 in the snapshot criteria, but the child is not a computingresource 914, the information may be stored in a data node, thereference to the node stored by the current computing resource. Thecomputing resource may then check 908 for further unsnapshotted childresources. If the child is not included 912 in the snapshot criteria,the computing resource may then continue to check 908 for furtherunsnapshotted child resources. After all child resources have beenvisited and reviewed for the snapshot and no further unsnapshotted orunreviewed child resources remain 908, the child computing resource mayreport 920 the child snapshot reference to the calling service. Afterall requests to child services have completed and a snapshot referencehas been returned to the control plane, the control plane may store thereference to the aggregated snapshot.

An example of a method in a distributed computing system thatprogrammatically selects nodes to instantiate from a snapshot is shownin FIG. 10. In one embodiment, a control plane may request a data planeinstantiate a network of computing resources using a desired snapshotand level of instantiation (such as a template instantiation of thesnapshot). The level of instantiation may include criteria, such thatonly computing resources and/or information that meet the criteria willbe instantiated. A request to restore a level of instantiation isreceived 1002 at the control plane. The data plane then receives 1004 arequest to restore a network of computing resources using a snapshot. Inthe event that dependencies between nodes must be respected, nodeswithin the snapshot may be visited. As each node is visited 1006, thenodes may be reviewed for dependency information 1008. The dependencyinformation may be implicit to the node, such as a data store requiringa subnet, or explicitly stated, such as an instance stating in itsmetadata that it is dependent on a data store. Any dependencies 1010 maybe added to a dependency structure, such as a DAG or table ofdependencies. The node itself 1012 may then be added to a DAG or list ofstructures to restore. If more nodes are 1014 within the snapshot, thosenodes may also be visited 1006 for dependencies. The dependencystructure may then be used 1016 to visit each node for provisioning. Aseach node is visited, the level of instantiation, and its criteria, maybe used to determine whether to instantiate the node as a computingresource and which data to include in the instantiation.

By simplifying the snapshot procedure and providing template snapshots,the snapshots may be used to provide others with copies of a distributedcomputer system template. In one embodiment, a snapshot of a live systemmay be used to bring up a second distributed computer system for atesting environment. In another embodiment, a snapshot may be used tocreate a template system for a second distributed computing based on thesame core functionality. For example, an e-bookseller may desire tobring up a second service to sell digital music using the sametechnology as the e-books. In an embodiment, a user may offer a templateinstantiation of a snapshot for sale in an electronic marketplace.

An example of electronic marketplace 1100 to purchase distributedcomputer system templates is shown in FIG. 11. The electronicmarketplace 1100 may be displayed via a web page displayed on a webbrowser interface 1102. The web page illustrated in FIG. 11 includes aresult pane 1104 on the right-hand side of the web page and a refinementpane 1106 on the left-hand side of the web page. In this example, theresult pane 1104 includes an ordered set of search results, where asearch result may be a representation of a template. The search resultsillustrated in FIG. 11 may have been identified as responsive to asearch query submitted by a user. For instance, in this example, the webpage includes a search box 1108 that illustrates a search query that theuser has submitted. In this example, as illustrated, the user hassubmitted a search query for “websites for purchase.” Accordingly, FIG.11 illustrates the search results in the result pane 1104 ascorresponding to various templates of distributed computing systems thatsupport websites that are available for purchase.

Once purchased, the electronic marketplace may contact a control planeand give permission to the purchasing user to access a instantiationfunction of the snapshot. Depending on the purchase, the control maygive permission to a depth or level of snapshot instantiation. Forexample, a purchase may be for a template depth or level of snapshotinstantiation. Depending on the settings, the user may be able to updatefrom future snapshots, or be limited to the snapshot purchased. Theelectronic marketplace may share the income with the seller, which mayinclude a one-time payment and/or recurring payments based on thepurchase and usage of systems instantiated from the snapshot. The sellermay continue to pay for the storage of the snapshot, while purchasers ofthe snapshot may pay for the instantiated computing resources. In oneembodiment, a purchaser may request that the snapshot merge with currentactive resources rather than create new resources. For example apurchaser may request that the purchased subnet merge with a currentlyactive subnet. Similarly, other resources may be merged, such as twodatabases.

In an embodiment, the system may be used to transfer control of adistributed computing system to another user. The distributed computingsystem owner may arrange a sale of the distributed computing system to anew owner. Once the purchase is completed, the control plane may preparea snapshot of the distributed computing system. Once the snapshot iscomplete, the control plane may instantiate the snapshot in thepurchaser's account. The old distributed computing system from theseller's account may then be taken down, as the new one is activated andtakes its place. An advantage of this transfer method is that a snapshotis made at the time of sale, which may provide peace of mind andprotection in the case of future misconfigurations by the purchaser. Inone embodiment, the migration operation may instantiate each computingresource after its snapshot is taken. This might provide the advantageof a faster transfer, as the full snapshot is not required beforeinstantiation of the transferred resource.

Portions of snapshots may also be purchased to add functionality tocurrent distributed computing services. For example, a website owner maydesire to add video hosting to their current offerings. A video hostingtemplate snapshot may be selected and instantiated into the owner'sdistributed computing system or cloud. If the video hosting should beprotected by Digital Rights Management (DRM), the user may also purchasea DRM snapshot to add to the distributed computing system. The DRMcomputing resources may then be configured to connect to the videohosting computing resources, such that the video rights may be digitallymanaged on the website. More specifically, the DRM snapshot may containan NCR node, subnet node and a set of computing resources in the subnet.The website owner may select to merge the NCR and subnet with an activeNCR and an active subnet. The computing resources, however, may beconfigured to instantiate within the active subnet. Thus, a websiteowner may configure how the snapshot is merged and/or instantiated withan active NCR.

FIG. 12 illustrates aspects of an example environment 1200 forimplementing aspects in accordance with various embodiments. As will beappreciated, although a Web-based environment is used for purposes ofexplanation, different environments may be used, as appropriate, toimplement various embodiments. The environment includes an electronicclient device 1202, which can include any appropriate device operable tosend and receive requests, messages, or information over an appropriatenetwork 1204 and convey information back to a user of the device.Examples of such client devices include personal computers, cell phones,handheld messaging devices, laptop computers, set-top boxes, personaldata assistants, electronic book readers, and the like. The network caninclude any appropriate network, including an intranet, the Internet, acellular network, a local area network, or any other such network orcombination thereof. Components used for such a system can depend atleast in part upon the type of network and/or environment selected.Protocols and components for communicating via such a network are wellknown and will not be discussed herein in detail. Communication over thenetwork can be enabled by wired or wireless connections, andcombinations thereof. In this example, the network includes theInternet, as the environment includes a Web server 1206 for receivingrequests and serving content in response thereto, although for othernetworks an alternative device serving a similar purpose could be usedas would be apparent to one of ordinary skill in the art.

The illustrative environment includes at least one application server1208 and a data store 1210. It should be understood that there can beseveral application servers, layers, or other elements, processes, orcomponents, which may be chained or otherwise configured, which caninteract to perform tasks such as obtaining data from an appropriatedata store. As used herein the term “data store” refers to any device orcombination of devices capable of storing, accessing, and retrievingdata, which may include any combination and number of data servers,databases, data storage devices, and data storage media, in anystandard, distributed, or clustered environment. The application servercan include any appropriate hardware and software for integrating withthe data store as needed to execute aspects of one or more applicationsfor the client device, handling a majority of the data access andbusiness logic for an application. The application server providesaccess control services in cooperation with the data store, and is ableto generate content such as text, graphics, audio, and/or video to betransferred to the user, which may be served to the user by the Webserver in the form of HTML, XML, or another appropriate structuredlanguage in this example. The handling of all requests and responses, aswell as the delivery of content between the client device 1202 and theapplication server 1208, can be handled by the Web server. It should beunderstood that the Web and application servers are not required and aremerely example components, as structured code discussed herein can beexecuted on any appropriate device or host machine as discussedelsewhere herein.

The data store 1210 can include several separate data tables, databases,or other data storage mechanisms and media for storing data relating toa particular aspect. For example, the data store illustrated includesmechanisms for storing production data 1212 and user information 1216,which can be used to serve content for the production side. The datastore also is shown to include a mechanism for storing log data 1214,which can be used for reporting, analysis, or other such purposes. Itshould be understood that there can be many other aspects that may needto be stored in the data store, such as for page image information andto access right information, which can be stored in any of the abovelisted mechanisms as appropriate or in additional mechanisms in the datastore 1210. The data store 1210 is operable, through logic associatedtherewith, to receive instructions from the application server 1208 andobtain, update, or otherwise process data in response thereto. In oneexample, a user might submit a search request for a certain type ofitem. In this case, the data store might access the user information toverify the identity of the user, and can access the catalog detailinformation to obtain information about items of that type. Theinformation then can be returned to the user, such as in a resultslisting on a Web page that the user is able to view via a browser on theuser device 1202. Information for a particular item of interest can beviewed in a dedicated page or window of the browser.

Each server typically will include an operating system that providesexecutable program instructions for the general administration andoperation of that server, and typically will include a computer-readablestorage medium (e.g., a hard disk, random access memory, read onlymemory, etc.) storing instructions that, when executed by a processor ofthe server, allow the server to perform its intended functions. Suitableimplementations for the operating system and general functionality ofthe servers are known or commercially available, and are readilyimplemented by persons having ordinary skill in the art, particularly inlight of the disclosure herein.

The environment in one embodiment is a distributed computing environmentutilizing several computer systems and components that areinterconnected via communication links, using one or more computernetworks or direct connections. However, it will be appreciated by thoseof ordinary skill in the art that such a system could operate equallywell in a system having fewer or a greater number of components than areillustrated in FIG. 12. Thus, the depiction of the system 1200 in FIG.12 should be taken as being illustrative in nature, and not limiting tothe scope of the disclosure.

The various embodiments further can be implemented in a wide variety ofoperating environments, which in some cases can include one or more usercomputers, computing devices, or processing devices which can be used tooperate any of a number of applications. User or client devices caninclude any of a number of general purpose personal computers, such asdesktop or laptop computers running a standard operating system, as wellas cellular, wireless, and handheld devices running mobile software andcapable of supporting a number of networking and messaging protocols.Such a system also can include a number of workstations running any of avariety of commercially-available operating systems and other knownapplications for purposes such as development and database management.These devices also can include other electronic devices, such as dummyterminals, thin-clients, gaming systems, and other devices capable ofcommunicating via a network.

Most embodiments utilize at least one network that would be familiar tothose skilled in the art for supporting communications using any of avariety of commercially-available protocols, such as TCP/IP, OSI, FTP,UPnP, NFS, CIFS, and AppleTalk. The network can be, for example, a localarea network, a wide-area network, a virtual private network, theInternet, an intranet, an extranet, a public switched telephone network,an infrared network, a wireless network, and any combination thereof.

In embodiments utilizing a Web server, the Web server can run any of avariety of server or mid-tier applications, including HTTP servers, FTPservers, CGI servers, data servers, Java servers, and businessapplication servers. The server(s) also may be capable of executingprograms or scripts in response requests from user devices, such as byexecuting one or more Web applications that may be implemented as one ormore scripts or programs written in any programming language, such asJava®, C, C# or C++, or any scripting language, such as Perl, Python, orTCL, as well as combinations thereof. The server(s) may also includedatabase servers, including without limitation those commerciallyavailable from Oracle®, Microsoft®, Sybase®, and IBM®.

The environment can include a variety of data stores and other memoryand storage media as discussed above. These can reside in a variety oflocations, such as on a storage medium local to (and/or resident in) oneor more of the computers or remote from any or all of the computersacross the network. In a particular set of embodiments, the informationmay reside in a storage-area network (“SAN”) familiar to those skilledin the art. Similarly, any necessary files for performing the functionsattributed to the computers, servers, or other network devices may bestored locally and/or remotely, as appropriate. Where a system includescomputerized devices, each such device can include hardware elementsthat may be electrically coupled via a bus, the elements including, forexample, at least one central processing unit (CPU), at least one inputdevice (e.g., a mouse, keyboard, controller, touch screen, or keypad),and at least one output device (e.g., a display device, printer, orspeaker). Such a system may also include one or more storage devices,such as disk drives, optical storage devices, and solid-state storagedevices such as random access memory (“RAM”) or read-only memory(“ROM”), as well as removable media devices, memory cards, flash cards,etc.

Such devices also can include a computer-readable storage media reader,a communications device (e.g., a modem, a network card (wireless orwired), an infrared communication device, etc.), and working memory asdescribed above. The computer-readable storage media reader can beconnected with, or configured to receive, a computer-readable storagemedium, representing remote, local, fixed, and/or removable storagedevices as well as storage media for temporarily and/or more permanentlycontaining, storing, transmitting, and retrieving computer-readableinformation. The system and various devices also typically will includea number of software applications, modules, services, or other elementslocated within at least one working memory device, including anoperating system and application programs, such as a client applicationor Web browser. It should be appreciated that alternate embodiments mayhave numerous variations from that described above. For example,customized hardware might also be used and/or particular elements mightbe implemented in hardware, software (including portable software, suchas applets), or both. Further, connection to other computing devicessuch as network input/output devices may be employed.

Storage media and computer readable media for containing code, orportions of code, can include any appropriate media known or used in theart, including storage media and communication media, such as but notlimited to volatile and non-volatile, removable and non-removable mediaimplemented in any method or technology for storage and/or transmissionof information such as computer readable instructions, data structures,program modules, or other data, including RAM, ROM, EEPROM, flash memoryor other memory technology, CD-ROM, digital versatile disk (DVD) orother optical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other medium which canbe used to store the desired information and which can be accessed bythe a system device. Based on the disclosure and teachings providedherein, a person of ordinary skill in the art will appreciate other waysand/or methods to implement the various embodiments.

The specification and drawings are, accordingly, to be regarded in anillustrative rather than a restrictive sense. It will, however, beevident that various modifications and changes may be made thereuntowithout departing from the broader spirit and scope of the invention asset forth in the claims.

Other variations are within the spirit of the present disclosure. Thus,while the disclosed techniques are susceptible to various modificationsand alternative constructions, certain illustrated embodiments thereofare shown in the drawings and have been described above in detail. Itshould be understood, however, that there is no intention to limit theinvention to the specific form or forms disclosed, but on the contrary,the intention is to cover all modifications, alternative constructions,and equivalents falling within the spirit and scope of the invention, asdefined in the appended claims.

The use of the terms “a” and “an” and “the” and similar referents in thecontext of describing the disclosed embodiments (especially in thecontext of the following claims) are to be construed to cover both thesingular and the plural, unless otherwise indicated herein or clearlycontradicted by context. The terms “comprising,” “having,” “including,”and “containing” are to be construed as open-ended terms (i.e., meaning“including, but not limited to,”) unless otherwise noted. The term“connected” is to be construed as partly or wholly contained within,attached to, or joined together, even if there is something intervening.Recitation of ranges of values herein are merely intended to serve as ashorthand method of referring individually to each separate valuefalling within the range, unless otherwise indicated herein, and eachseparate value is incorporated into the specification as if it wereindividually recited herein. All methods described herein can beperformed in any suitable order unless otherwise indicated herein orotherwise clearly contradicted by context. The use of any and allexamples, or exemplary language (e.g., “such as”) provided herein, isintended merely to better illuminate embodiments of the invention anddoes not pose a limitation on the scope of the invention unlessotherwise claimed. No language in the specification should be construedas indicating any non-claimed element as essential to the practice ofthe invention.

Preferred embodiments of this disclosure are described herein, includingthe best mode known to the inventors for carrying out the invention.Variations of those preferred embodiments may become apparent to thoseof ordinary skill in the art upon reading the foregoing description. Theinventors expect skilled artisans to employ such variations asappropriate, and the inventors intend for the invention to be practicedotherwise than as specifically described herein. Accordingly, thisinvention includes all modifications and equivalents of the subjectmatter recited in the claims appended hereto as permitted by applicablelaw. Moreover, any combination of the above-described elements in allpossible variations thereof is encompassed by the invention unlessotherwise indicated herein or otherwise clearly contradicted by context.

All references, including publications, patent applications, andpatents, cited herein are hereby incorporated by reference to the sameextent as if each reference were individually and specifically indicatedto be incorporated by reference and were set forth in its entiretyherein.

What is claimed is:
 1. A computer-implemented method for performing asnapshot of a distributed computing environment at a point in time, themethod comprising: under control of one or more computer systemsconfigured with executable instructions, receiving a request to preparea snapshot of a network of computing resources according to one or morespecified data selection parameters; generating informationrepresentative of at least a topology of the network of computingresources; traversing at least a portion of the topology of the networkof computing resources to generate one or more data set representationsof one or more of the computing resources according to the one or morespecified data selection parameters; and providing the generatedinformation and generated one or more data set representations in amanner enabling one or more computing resource provisioning computersystems to instantiate a replica of the network of computing resourcesbased at least in part on the provided generated information andgenerated one or more data set representations.
 2. The method of claim1, wherein a control plane receives the request and prepares a workflowfor a data plane to accomplish the generating information, traversing atleast a portion of the topology, and providing the generatedinformation.
 3. The method of claim 1, wherein generating one or moredata set representations further comprises: preparing a genericidentifier, the generic identifier indicating site specific informationthat should be configured at a restore event, the generic identifierstored within the one or more data set representations.
 4. The method ofclaim 1, wherein generating one or more data set representations furthercomprises storing metadata within at least one data set representation,the metadata further identifying data as template data within the atleast one data set representation containing the metadata.
 5. The methodof claim 2, wherein the workflow is contained within a transaction,wherein executing the transaction causes the computing resources toprevent further changes until the transaction is complete, and whereinthe control plane communicates the transaction to the data plane.
 6. Themethod of claim 5, wherein the transaction includes steps, each stepdefining an action to be performed by the data plane.
 7. The method ofclaim 5, the method further including storing customer stateinformation, the customer state information containing configurationfrom computing resources external to and associated with the network ofcomputing resources.
 8. A computer-implemented method for performing asnapshot representation of a distributed computing environment at apoint in time, the method comprising: under control of one or morecomputer systems configured with executable instructions, determining alevel of a hierarchy of information in the distributed computingenvironment to store in a combined snapshot, the distributed computingenvironment including a set of computing resources; for each computingresource in at least a subset of the set of computing resources,determining snapshot information within the computing resource matchingthe level of the hierarchy; storing the determined snapshot informationmatching the level of the hierarchy in one or more stored nodes, the oneor more stored nodes held within the combined snapshot; and preparingthe combined snapshot of the one or more stored nodes, the combinedsnapshot including a structure of the distributed computing environment.9. The method of claim 8, the method further comprising: receiving arequest to instantiate at least a portion of the distributed computingenvironment with an instantiation level of the hierarchy; for eachstored node within the instantiation level of the hierarchy and portionof the distributed computing environment, determining dependenciesbetween a stored node and other stored nodes; storing the dependenciesin a data structure for use during provisioning; and using the datastructure to instantiate computing resources from stored nodes withinthe instantiation level of hierarchy, the instantiation performed in anorder that respects dependencies between computing resources stored inthe stored nodes, the computing resources receiving snapshot informationwithin the instantiation level of the hierarchy from data associatedwith the stored nodes; and instantiating a replica of at least a portionof the distributed computing environment represented by the combinedsnapshot.
 10. The method of claim 9, wherein stored nodes furthercomprise one or more data nodes, the method further comprising: loadingdata from a data node to an instantiated computing resource based atleast in part on a computing-resource stored node linked to a data nodein the combined snapshot, the instantiated computing resource havingbeen created from the computing-resource stored node.
 11. The method ofclaim 10, wherein at least one of the one or more data nodes includeconfiguration information for the instantiated computing resource, themethod further comprising: selectively loading the configurationinformation from a data node into the instantiated computing resourcebased at least in part on the instantiation level of the hierarchy. 12.The method of claim 10, wherein the stored nodes further comprise one ormore configuration nodes, the method further comprising: selectivelyloading configuration information from a configuration node into theinstantiated computing resource based at least in part on theinstantiation level of the hierarchy, the configuration node linked tothe computing resource stored node.
 13. The method of claim 8, themethod further comprising traversing the set of computing resources, theset of computing resources forming a tree.
 14. A system for preparing asnapshot of a distributed computing environment at a point in time,comprising: at least one processor; and memory including instructionsthat, when executed by the at least one processor, cause the system toprepare a snapshot of a distributed computing system that causes atleast the following to be performed: receiving a request for a snapshotof a distributed computing environment, the distributed computingenvironment including a first computing resource, wherein the firstcomputing resource contains a first set of one or more secondarycomputing resources, wherein each of the one or more secondary computingresources of the first set of one or more secondary computing resourcescontains zero or more secondary computing resources, the secondarycomputing resources forming a set of secondary computing resources;saving a representation of the first computing resource; traversing atleast part of the set of secondary computing resources to save at leastone representation of at least one secondary computing resource of theset of secondary computing resources during the traverse; marking aportion of the at least one representation as a template portion of thesnapshot; and associating the representations of the first and secondarycomputing resources together as a snapshot.
 15. The system of claim 14,wherein the instructions further include: granting access to thetemplate portion of the snapshot to a second user, the second userdifferent than a first user, the system having received a request fromthe first user to prepare the snapshot; and restoring the templateportion of the snapshot to the second user.
 16. The system of claim 14,wherein the snapshot includes the template portion of the snapshot andproduction data.
 17. The system of claim 14, wherein the snapshotincludes the template portion of the snapshot, production data andconfiguration data.
 18. The system of claim 17, wherein the instructionsfurther include: restoring the snapshot to a new distributed computingenvironment; and activating the new distributed computing environment insuch a way as to not interfere with the distributed computingenvironment.
 19. One or more non-transitory computer-readable storagemedia having collectively stored thereon executable instructions that,when executed by one or more processors of a computer system, cause thecomputer system to at least: receiving a request to restore a snapshotof a network of computing resources according to one or more specifieddata selection parameters; traversing a least a portion of nodes in asnapshot to determine an order of instantiation, at least one nodeforming a representation of a computing resource, the order ofinstantiation based at least in part on dependencies between therepresentations of computing resources; causing one or more of therepresentations of computing resources to be provisioned according tothe one or more specified data selection parameters and the order ofinstantiation; and restoring the provisioned one or more representationsto instantiate a replica of the network of computing resourcesrepresented in the snapshot based at least in part on the one or morerepresentations of computing resources in the snapshot.
 20. The one ormore non-transitory computer-readable storage media of claim 19, whereinone or more of the provisioned computing resources is selected from agroup consisting of a network device, a computing device, and a datastore.
 21. The one or more non-transitory computer-readable storagemedia of claim 19, wherein restoring the provisioned one or morerepresentations further comprises: providing a service to manage a classof computing resources; and providing information from the snapshot tothe service such that at least one of the computing resources isprovisioned.
 22. The one or more non-transitory computer-readablestorage media of claim 19, wherein restoring the provisioned one or morerepresentations further comprises: receiving a value from a first user,the first user different from a second user, the snapshot associatedwith the second user; and restoring the snapshot for the first user. 23.The one or more non-transitory computer-readable storage media of claim22, wherein the request to restore is received from the first user. 24.The one or more non-transitory computer-readable storage media of claim22, wherein receiving the value further comprises: receiving the valuefrom the first user in an electronic marketplace in exchange for accessto the snapshot of the second user; communicating a request for accessto a snapshot to at least one computing device responsible for thesnapshot of the second user; and granting access to the first user forthe snapshot of the second user.
 25. The one or more non-transitorycomputer-readable storage media of claim 22, wherein restoring thesnapshot further comprises merging at least one of the one or morerepresentations with an existing computing resource belonging to thefirst user.
 26. The one or more non-transitory computer-readable storagemedia of claim 19, wherein causing one or more of the representations ofcomputing resources to be provisioned further includes providing accessto customer data contained within the snapshot, the customer datarepresenting external computing resources external to a provisioningsystem responsible for the network of computing resources, the externalcomputing resources having to be separately configured.